import {
	mapState
} from 'vuex';
import {
	toNumber
} from '@/utils/transform';
import {
	wxConfig
} from '@/mixins/wxConfig';
import { localPostage } from '@/mixins/localPostage';
export const confirm = {
	mixins: [wxConfig,localPostage],
	data() {
		return {
			productIds: '', // 优惠券产品id
			fk_supplier_id:0,// 优惠券店铺id（普通产品）
			prodType: '', // 秒杀普通产品:seckill
			dataForm: {
				type: 1, // 1：默认，2:从购物车进来的
				// #ifndef MP-ALIPAY
				pay_type: '1', // 支付方式
				// #endif 
				// #ifdef MP-ALIPAY
				pay_type: '7',
				// #endif
				// #ifdef MP-BAIDU
				pay_type: '8',
				// #endif
				// #ifdef MP-TOUTIAO
				pay_type: '9',
				// #endif
			},
			couponPrice: 0,
			selectList: [],
			allProdPrice: 0, // 产品总金额
			prodPostage: 0, // 运费邮费
			prodCount: 0, // 产品总数量
			page_params:{},//传值过来的数据
		}
	},
	computed: {
		...mapState(['vuex_address']),
		totalPrice() {
			// 订单待支付金额,选了快递地址，就不算邮费进去
			let price = this.allProdPrice + (this.checkPick ? 0 : this.prodPostage) - this.couponPrice;
			return price >= 0 ? price : 0;
		}
	},
	watch: {
		vuex_address: {
			handler(val) {
				if (val) {
					this.resetPostage()
				}
			},
		}
	},
	onLoad(options) {
		this.initPage(options);
	},
	methods: {
		//初始化页面
		initPage(options) {
			// #ifdef MP-TOUTIAO	
			//字节小程序上个页面调用了loading之后如果不进行关闭到下一个页面loading还会在
			uni.hideLoading()
			// #endif

			// #ifdef H5
			// h5需要先获取支付和地址的配置
			this.$loading();
			this.initWxConfig(['chooseWXPay', 'openAddress'])
				.then(() => {
					this.$hide()
				})
				.catch(() => this.$hide());
			// #endif
			// 通道事件：获取要下单的产品

			this.getOrderProdList(options);

			if (this.specialHandle) { // 拍卖
				this.specialHandle(options)
			}
		},


		// 传值过来的参数赋值	
		onTransmission(res) {
			this.page_params = res
			this.prodType = res.prodType || ''
			this.dataForm.type = res.type == 'cart' ? 2 : 1
			let totalProPrice = 0,
				productIds = [],
				prodPostage = 0
			this.prodCount = 0
			res.list.forEach((item) => {
				this.prodCount += item.num
			})
			let use_supplier_coupon = res.list[0].fk_supplier_id || 0 // 是否使用店鋪优惠券
			this.selectList = res.list.map(item => {
				if(use_supplier_coupon != item.fk_supplier_id){use_supplier_coupon = 0}
				productIds.push(item.product_id)
				// 计算运费：如果不需要运费，进来该页面前赋值 express_num：0 express_price：0，product_freight:[]
				let postageObj = this.$getPostage(this.prodCount, item.express_num, item.express_price, item
					.product_freight, item.price);
				if (postageObj.price > prodPostage) {
					prodPostage = postageObj.price
				}
				item.msg = postageObj.msg || '';
				totalProPrice += toNumber(item.price) * toNumber(item.num)
				return item;
			});
			this.fk_supplier_id = use_supplier_coupon && use_supplier_coupon > 0 ? use_supplier_coupon : 0
			this.productIds = productIds.join(',')
			if (this.vuex_config.self_mention == 1 || (productIds.length == 1 && this.$refs.pick_up_view)) {
				/*自提商城 || 只有一个产品*/
				this.getPickupList(productIds[0])
			}
			// 计算产品总金额
			this.allProdPrice = totalProPrice;
			// 获取运费
			this.prodPostage = prodPostage;
			if (this.finshedCall) {
				this.finshedCall()
			}
		},

		// 获取要下单的产品
		getOrderProdList(options) {
			let $this = this

			// #ifdef   MP-BAIDU || MP-ALIPAY || MP-TOUTIAO	
			// 购物车有可能是tabbar进去 或者商品详情里面进去 所以获取到的页面栈数据不一致 所以直接把购物车数据存到本地
			let pages = getCurrentPages();
			let prevPage = pages[pages.length - 2]
			if (prevPage.$vm.paramsObj) {
				$this.onTransmission(prevPage.$vm.paramsObj)

			} else {
				$this.onTransmission(this.proShopPayList)
			}
			// #endif



			// #ifndef MP-ALIPAY ||  MP-BAIDU || MP-TOUTIAO	
			let openChannel = this.getOpenerEventChannel();
			openChannel.once('acceptParams', res => {
				$this.onTransmission(res)
			});
			//#endif 
		},
		// 重新计算运费
		resetPostage() {
			let prodPostage = 0
			this.selectList = this.selectList.map(item => {
				// item.prodPrice = toNumber(item.price) * toNumber(item.num);
				// 已选了地址时，计算运费
				let postageObj = this.$getPostage(this.prodCount, item.express_num, item.express_price, item
					.product_freight, item.price);
				if (postageObj.price > prodPostage) {
					prodPostage = postageObj.price
				}
				item.msg = postageObj.msg || '';
				return item;
			})
			this.prodPostage = prodPostage;
		},
		// 获取自提地址
		getPickupList(prodId) {
			this.prodId = prodId;
			let params = {
				page_size: 10
			}
			if (this.vuex_config.self_mention != 1 && prodId > 0) {
				params.pk_id = prodId
			}
			this.$resPost('GetProductDeliveryList', {
					...params
				})
				.then(({
					data
				}) => {
					let arr = []
					arr = arr.concat(data)
					if(arr.length >0){
						this.showNav = true
					}
				})
				.catch(() => {});
		},
	}
}
